#include <iostream>
#include <ctime>
using namespace std;

/**
 * 时间类的学习
 *  核心时间类
 */
// struct tm {
//     int tm_sec;   // 秒，正常范围从 0 到 59，但允许至 61
//     int tm_min;   // 分，范围从 0 到 59
//     int tm_hour;  // 小时，范围从 0 到 23
//     int tm_mday;  // 一月中的第几天，范围从 1 到 31
//     int tm_mon;   // 月，范围从 0 到 11
//     int tm_year;  // 自 1900 年起的年数
//     int tm_wday;  // 一周中的第几天，范围从 0 到 6，从星期日算起
//     int tm_yday;  // 一年中的第几天，范围从 0 到 365，从 1 月 1 日算起
//     int tm_isdst; // 夏令时
// };

void timeFunc()
{
    int timestamp = time(NULL);
    cout << "current timestamp:" << timestamp << endl;

    // get current computer time
    time_t now = time(0);

    // format string
    char timeStr[26];
    errno_t err = ctime_s(timeStr, sizeof(timeStr), &now);
    if (err == 0)
    {
        cout << "time:" << timeStr << endl;
    }
    else
    {
        cerr << "time format error:" << err << endl;
    }

    // print date time
    struct tm localT;
    errno_t err2 = localtime_s(&localT, &now);
    if (err2 == 0)
    {
        cout << "year:" << (localT.tm_year + 1900) << endl;
        cout << "mon:" << (localT.tm_mon + 1) << endl;
        cout << "day:" << localT.tm_mday << endl;
    }
    else
    {
        cerr << "time format error:" << err << endl;
    }
}

int main(int argc, char* argv[])
{
    timeFunc();
}
